//package south;
//
//import java.io.ByteArrayInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.Closeable;
//import java.io.IOException;
//import java.io.ObjectInputStream;
//import java.io.ObjectOutputStream;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import com.ucmed.common.exceptions.BizException;
//
///**
// * @ClassName SerializeUtil
// * @Description Java版的 Serialize，应用在缓存的序列化的地方
// * @author piaolinzhi
// * @date 2016年12月14日 下午4:13:42
// */
//public final class SerializeUtil {
//
//    public static final Logger LOG = LoggerFactory
//            .getLogger(SerializeUtil.class);
//
//    /**
//     * @Description 序列化方法
//     * @author piaolinzhi
//     * @date 2016年12月14日 下午4:14:40
//     * @param value
//     *            待序列化的值
//     * @return 序列化后的二进制数组
//     */
//    public static byte[] serialize(Object value) {
//        if(value == null) {
//            throw new NullPointerException("Can't serialize null");
//        }
//        byte[] rv = null;
//        ByteArrayOutputStream bos = null;
//        ObjectOutputStream os = null;
//        try {
//            bos = new ByteArrayOutputStream();
//            os = new ObjectOutputStream(bos);
//            os.writeObject(value);
//            os.close();
//            bos.close();
//            rv = bos.toByteArray();
//        } catch(Exception e) {
//            LOG.error("Serialize error.",e);
//        } finally {
//            close(os);
//            close(bos);
//        }
//        return rv;
//    }
//
//    public static Object deserialize(byte[] in) {
//        return deserialize(in, Object.class);
//    }
//
//    @SafeVarargs
//    @SuppressWarnings("unchecked")
//    public static <T> T deserialize(byte[] in, Class<T>... requiredType) {
//        Object rv = null;
//        ByteArrayInputStream bis = null;
//        ObjectInputStream is = null;
//        try {
//            if(in != null) {
//                bis = new ByteArrayInputStream(in);
//                is = new ObjectInputStream(bis);
//                rv = is.readObject();
//            }
//        } catch(Exception e) {
//            LOG.error("Deserialize error",e);
//        } finally {
//            close(is);
//            close(bis);
//        }
//        return (T) rv;
//    }
//
//    private static void close(Closeable closeable) {
//        if(closeable != null)
//            try {
//                closeable.close();
//            } catch(IOException e) {
//                e.printStackTrace();
//                System.out.println("close stream error");
//            }
//    }
//
//    private SerializeUtil() {
//        throw new BizException("Try initialize a util class. ");
//    }
//
//}
